package ar.com.psicosoft.service.psicosoft_admin;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import ar.com.psicosoft.exception.PsicosoftException;
import ar.com.psicosoft.model.psicosoft_admin.Usuario;
import ar.com.psicosoft.persistence.psicosoft_admin.UsuarioDao;

@Service("usuarioService")
public class UsuarioServiceImpl implements UsuarioService {

	private static final long serialVersionUID = 1L;

	@Resource
	private UsuarioDao usuarioDao;

	@Override
	@Transactional(readOnly = true, propagation = Propagation.REQUIRED)
	public Usuario buscarUsuarioPorId(Integer idUsuario)
			throws PsicosoftException {
		return this.usuarioDao.buscarUsuarioPorId(idUsuario);
	}

	@Override
	@Transactional(readOnly = true, propagation = Propagation.REQUIRED)
	public Usuario buscarUsuarioPorLogin(String login)
			throws PsicosoftException {
		return this.usuarioDao.buscarUsuarioPorLogin(login);
	}

	@Override
	@Transactional(readOnly = true, propagation = Propagation.REQUIRED)
	public boolean validarUsuario(String login, String clave)
			throws PsicosoftException {
		return this.usuarioDao.validarUsuario(login, clave);
	}

	@Override
	public List<Usuario> buscarUsuarios() throws PsicosoftException {
		return this.usuarioDao.buscarUsuarios();
	}

	@Override
	@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
	public void guardarUsuario(Usuario usuario) throws PsicosoftException {
		this.usuarioDao.guardarUsuario(usuario);
	}

	@Override
	@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
	public void modificarUsuario(Usuario usuario) throws PsicosoftException {
		this.usuarioDao.modificarUsuario(usuario);
	}

	@Override
	@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
	public void eliminarUsuario(Usuario usuario) throws PsicosoftException {
		this.usuarioDao.eliminarUsuario(usuario);
	}

	@Override
	@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
	public void bajaUsuario(Usuario usuario) throws PsicosoftException {
		this.usuarioDao.bajaUsuario(usuario);
	}

}